// ES modules
import { io } from 'socket.io-client'
import { Manager } from 'socket.io-client'
import Vue from 'vue'
// import tools from '@/plugins/tools.js' // 导入其他插件的方法
let socket

export default ({ store }) => {
  // 检查store和token是否存在
  if (store && store.state && store.state.guid) {
    console.log('Socket plugin is loaded----------')
    initSocket(store)
  }
}

export function initSocket(store) {
  // 检查token是否存在
  if (!store.state.guid) {
    console.error('Token is not available in the store.')
    return
  }

  // 如果socket实例已经存在，则先关闭它
  if (socket) {
    socket.close()
  }

  var str = store.$tools.getEncrypt(store.$tools.getDecrypt(store.state.uid) + '|0|' + store.state.guid)
  // 确保构建正确的URL，其中包含命名空间和查询参数
  var queryParam = `Authorization=${str}`
  var namespace = '/pms' // 命名空间应该紧随服务器地址之后
  var socketUrl = `https://ccshcc.ccccdt.com${namespace}?${queryParam}`
  // 创建新的socket实例
  // socket = io(`https://ccshcc.ccccdt.com/pms?Authorization=${str}`, {})
  console.log('socketUrl', socketUrl)
  socket = io(socketUrl, {
    transports: ['websocket', 'polling'] // use WebSocket first, if available
  })
  // const manager = new Manager('https://ccshcc.ccccdt.com')
  // socket = manager.socket('/pms')
  // 添加全局方法或属性
  Vue.prototype.$socket = socket
  // 可以在这里添加socket的事件监听器等
  socket.on('connect', () => console.log('Socket connected'))
  socket.on('disconnect', () => console.log('Socket disconnected'))
}
